Applications can be developed using various architectures, including, for example, a model-view-controller (MVC) architecture. The MVC architecture breaks an application into three separate parts—models, views, and controllers. Each model may have multiple views, where each view displays information about the model to a user. A controller of the model receives events, for example, raised by a user interacting with a view to manipulate the model. Each model may have multiple controllers and a controller may relate to multiple views. When changes occur in the model, the model updates its views. Data-binding may be used for data transport between the view and its model or controller. For example, a table view may be defined to display data of a corresponding table that is stored in the model or controller. Further, the table view may be replaced by a further view, such as a graph view, that binds against the same table.
Application development is often divided into two general stages: design time and runtime. With respect to the MVC example above, the design time stage may include steps such as designing the views of an application (including the layout of the user interface elements in each view), modeling of the application flow (including the selection of the views to be displayed), designing one or more models, and creating and editing other application elements, such as controllers and contexts. The design time stage may also include the binding of user interface (UI) elements within views to data sources that are defined in a data type repository. Information created during the design time may include application metadata. Application metadata may be stored in a metadata repository, and used as input to the runtime process. During the runtime process, the application metadata may be used to generate the actual runtime code of an application. In some implementations, the application metadata is platform independent, and the generated runtime code is platform specific. The runtime code may be executed in a runtime environment that provides a general framework for running applications. For example, a runtime environment may provide services for deploying and maintaining applications, as well as features such as a caching mechanism that may be used to improve performance, and automatic input assistance and default error handling that is based on the declared application metadata.